package analiseSintatica;

import java.util.LinkedList;

import analiseSintatica.estruturadados.ErroSintatico;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

/**
 * Excecao para mostrar erros sintaticos
 * @version 1.0
 * @author Elisson
 */
public class ErroSintaticoException extends Exception{
	protected LinkedList<ErroSintatico> erros = new LinkedList<ErroSintatico>(); //Lista de erros em uma excecao
	
	private static final long serialVersionUID = 1L;

	/**
	 * Adiciona um erro a lista de erros 
	 * @param erro - Erro sintatico
	 * @param correto - Forma correta
	 * @param linha - Linha do erro
	 */
	public void addErros(String erro, String correto, int linha){
		erros.add(new ErroSintatico(erro, correto, linha));
	}
	
	/**
	 * Adiciona um erro a lista de erros 
	 * @param erro - Objeto Erro sintatico
	 */
	public void addErros(ErroSintatico erro){
		erros.add(erro);
	}
	
	/**
	 * Retorna erro
	 * @return erro
	 */
	public ErroSintatico getErros() {
		return erros.removeFirst();
	}
	
	/**
	 * Retorna tamanho da lista
	 * @return Tamanho da lista
	 */
	public int size(){
		return erros.size();
	}


        /**
         * Adiciona uma lista de erros de uma collection do java
         * @param listaErros uma lista de erros (arrayList, por ex.)
         */
        public void addErros (List<ErroSintatico> listaErros){

            for (int i=0;i<listaErros.size();i++){
                this.addErros(listaErros.get(i));
            }
        }
}
